<?php

namespace app\admin\controller;
use think\facade\View;
use app\admin\validate\Category as CategoryValidate;
use app\common\business\Category as CategoryBus;
use app\common\lib\Status as StatusLib;
class Category extends AdminBase
{
    public function index()
    {
        $pid = $this->request->param("pid",0,"intval");
        $data = [
            "pid" => $pid
        ];

        try {
            $categorys = (new CategoryBus())->getLists($data,10);
        }catch (\Exception $e){
            $categorys = [];
        }

//        halt($categorys);
        return View::fetch("",[
            "categorys" => $categorys,
            "pid" => $pid,
        ]);
    }

    public function add()
    {
        try {
            $categorys = (new CategoryBus())->getNormalCategorys();
        }catch (\Exception $e){
            $categorys = [];
        }
        return View::fetch("",["categorys" => json_encode($categorys)]);
    }

    public function save()
    {
        $pid = $this->request->param('pid',0,'intval');
        $name = $this->request->param('name',"",'trim');

        $data = [
            'pid' => $pid,
            'name' => $name
        ];


        $validate = new CategoryValidate();
        if(!$validate->check($data)){
            return show(config("status.error"),$validate->getError());
        }

        try {
           $result =  (new CategoryBus())->add($data);
        }catch (\Exception $e){
            return show(config("status.error"),$validate->getMessage());
        }
        if($result){
            return show(config("status.success"),"ok");
        }
        return show(config("status.error"),"新增分类失败");

    }

    /**
     * 排序
     * @return void
     */
    public function listorder()
    {
        $id = $this->request->param("id",0,'intval');
        $listorder = $this->request->param("listorder",0,'intval');
        if(!$id){
            return show(config("status.error"),"参数错误");
        }

        try {
            $res = (new CategoryBus())->listorder($id,$listorder);
        }catch (\Exception $e){
            return show(config("status.error"),$e->getMessage());
        }

        if($res){
            return show(config("status.success"),"排序成功");
        }else{
            return show(config("status.error"),"排序失败");
        }

    }


    /**
     * 状态更新
     * @return \think\response\Json
     */
    public function status()
    {
        $status = $this->request->param("status",0,"intval");
        $id= $this->request->param("id",0,"intval");

        //validate验证

        if(!$id || !in_array($status,StatusLib::getTableStatus())){
            return show(config("status.error"),"参数错误");
        }

        try {
            $res = (new CategoryBus())->status($id,$status);
        }catch (\Exception $e){
            return show(config("status.error"),$e->getMessage());
        }

        if($res){
            return show(config("status.success"),"状态更新成功");
        }else{
            return show(config("status.error"),"状态更新失败");
        }
    }
}